iT邦幫忙

2025 iThome 鐵人賽

DAY 8
1
AI & Data

動不動就要 ETL? 以Trino為例-淺談從資料倉儲到湖倉系列 第 8

Day 08 - Trino 地端架設與調參 (二)

  • 分享至 

  • xImage
  •  

8

HTTP 與 UI 設置

  1. 配置 config.properties 時需注意 http 相關的設定 :

    • https 認證 : Trino 使用 https 連線至各資料源,預設沒有任何安全認證,所以地端要起服務時要指定 self-signed certificate 的路徑
http-server.https.enabled=true
http-server.https.port=8443
http-server.https.keystore.path=/etc/trino/certs/keystore.jks
http-server.https.keystore.key=password
  1. UI 設置 : Trino 官方有提供 Web UI 來監控 query log, 所以這邊要把 UI 打開,並使用密碼做權限以及帳號控管
web-ui.enabled=true
http-server.authentication.type=PASSWORD
  1. 若有設定 http-server.authentication.type=PASSWORD 則要於 coordinator下多配置以下檔案 :
    • password-authenticator.properties
    • password.db
# password-authenticator.properties
password-authenticator.name=file
file.password-file=/etc/trino/password.db

# password.db
# 使用以下指令新增帳密至 password.db
## 通常 Local 設定帳密一樣
htpasswd -B -C 10 local/init/trino/coordinator/password.db <user_name>

啟動!Trino

配置文件的參數百百種,這邊僅介紹能啟動 toy example 最小的部分,其餘的後續篇章會接續討論,文件配置完成後即可啟動我們的 Trino :

  1. 先使用 OpenJDK 內建的 keytool 產生 self-signed certificate
## Create directory for certs
mkdir ./local/init/trino/certs/

## Generate key and create Keystore
keytool -genkeypair -alias trino -keyalg RSA -keystore ./local/init/trino/certs/keystore.jks \
-dname "CN=coordinator, OU=datalake, O=dataco, L=Sydney, ST=NSW, C=AU" \
-ext san=dns:coordinator,dns:coordinator.presto,\
         dns:coordinator.presto.svc,dns:coordinator.presto.svc.cluster.local,\
         dns:coordinator-headless,dns:coordinator-headless.presto,\
         dns:coordinator-headless.presto.svc,dns:coordinator-headless.presto.svc.cluster.local,
         dns:localhost,dns:trino-proxy,ip:127.0.0.1,ip:192.168.64.5,ip:192.168.64.6 \
-storepass password

## Export liscence from Keystore
keytool -exportcert -file ./local/init/trino/certs/trino.cer\
        -alias trino -keystore ./local/init/trino/certs/keystore.jks\
        -storepass password

## Import liscence to Truststore
keytool -import -v -trustcacerts\
        -alias trino_trust -file ./local/init/trino/certs/trino.cer\
        -keystore ./local/init/trino/certs/truststore.jks\
        -storepass password -keypass password -noprompt

## Check liscence in Keystore
keytool -keystore ./local/init/trino/certs/keystore.jks -exportcert\
        -alias trino -storepass password| openssl x509 -inform der -text

## Transform JKS Keystore to PKCS12
keytool -importkeystore -srckeystore ./local/init/trino/certs/keystore.jks\
        -destkeystore ./local/init/trino/certs/trino.p12\
        -srcstoretype jks -deststoretype pkcs12 -srcstorepass password\
        -deststorepass password

## Transform PKCS12 Keystore to PEM
openssl pkcs12 -in ./local/init/trino/certs/trino.p12\
               -out ./local/init/trino/certs/trino.pem\ 
               -passin pass:password -passout pass:password

## Transform DER Keystore to CRT
openssl x509 -in ./local/init/trino/certs/trino.cer -inform DER\
             -out ./local/init/trino/certs/trino.crt
  1. 然後即可執行 make file 啟動指令 : make start profiles=trino

  2. 啟動後可以用 docker ps 指令檢查容器狀態,若 coordinatorworker 皆顯示 healthy (如下圖) 則恭喜你成功啟動人生中第一座 Trino

Toy example 容器狀態

  1. 最後可以檢查 UI 是否可以成功使用 password.db 的設定值登入 :

Trino UI 登入畫面
Trino UI 介面

明日預告

系列文明日《Trino 地端架設與調參 (三)》將帶你解鎖「查詢續命術」——深入 Fault-tolerant 機制,聊聊查詢怎麼在 worker 掛掉後原地滿血復活,並用 S3 當急救包,讓失敗任務秒速回魂。

Know me more

My Linkedin: https://www.linkedin.com/in/benny0624/
My Medium: https://hndsmhsu.medium.com/


上一篇
Day 07 - Trino 地端架設與調參 (一)
下一篇
Day 09 - Trino 地端架設與調參 (三)
系列文
動不動就要 ETL? 以Trino為例-淺談從資料倉儲到湖倉29
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言